Prototyping systems are commonly used for validating electronic circuits. A prototyping system makes it possible to create a physical implementation of the electronic circuit under validation (a prototype). The prototype is tested in order to determine whether the electronic circuit exhibits the desired features; for example, this is an essential step of the design process of any complex electronic circuit, such as a digital ASIC (Application Specific Integrated Circuit).
Typically, the prototype is created scattering the electronic circuit across several FPGAs (Field-Programmable Gate Arrays) that are connected together. A known solution is that of employing a breadboard, which consists of a printed circuit board that is custom designed in order to meet the specific routing requirements of the prototype. The FPGAs are placed onto the breadboard and connected together through conductive tracks. This structure allows the prototype to run at a frequency that is close to the one of the actual electronic circuit (real-time prototyping).
However, the making of the breadboard is an expensive process, in terms of both manpower costs and development time; moreover, it is not possible to re-use the breadboard for a different prototype. The solution described above is quite rigid, since the breadboard cannot be altered in any way.
A different solution is that of using a field-programmable printed circuit board, which is provided with a grid of holes for plugging in the FPGAS. These holes are grouped into sections, with all holes in a section leading to corresponding pins of a switch matrix; the switch matrices communicate between themselves with direct hardwired connections. This architecture provides a high routing flexibility, since a complete interconnectivity of the FPGAs can be obtained by suitably configuring the switch matrices.
However, in the solution described above each signal to be transmitted between two FPGAs must go through some switches. This introduces considerable delays, which reduce the operative frequency of the prototype; therefore, the prototype can only run at a speed significantly lower than the one of the actual electronic circuit.
In many cases, a real world target system in which the electronic circuit must operate has timing constraints; particularly, some components of the target system cannot be slowed down too much, for example because an internal PLL does not work below a threshold frequency. As a consequence, it is not possible to connect the prototype to other systems directly; this does not allow the prototype to be operated and tested under normal working conditions.
Similar drawbacks are also suffered using alternative topologies for interconnecting the FPGAs. For example, known prototyping systems envisage a mesh (wherein each FPGA is connected to the nearest-neighbour FPGAs, possibly through one or more hops), a cross-bar (wherein the FPGAs are connected to a routing-only element, possibly with a hierarchical structure), virtual wires or pin multiplexing (wherein signals are multiplexed over a reduced number of physical wires), and the like.
Modular systems have been also proposed. In these systems, the FPGAs are mounted on daughter boards that are connected together or to a mother board in order to attain the desired configuration of the prototyping system.
However, none of the daughter boards known in the art has a structure that is specifically tailored to the use in a very high-speed prototyping system. Therefore, the daughter boards have a detrimental impact on the performance of the whole prototyping system. This introduces additional delays, which further reduce the operative frequency of the prototype.